//: net/mindview/util/Sets.java
package t4j.net.mindview.util;
import java.util.*;

public class Sets {
 
	//并
	public static <T> Set<T> union(Set<T> a,Set<T> b){
		Set<T> result = new HashSet<T>(a);
		
		result.addAll(b);
		
		return result;
	}
	
	//交
	public static <T> Set<T> intersection(Set<T> a,Set<T> b){
		Set<T> result = new HashSet<T>(a);
		
		result.retainAll(b);
		
		return result;
	}
	
	
	//差
	public static <T> Set<T> difference(Set<T> superset,Set<T> subset){
		Set<T> result = new HashSet<T>(superset);
		
		result.removeAll(subset);
		
		return result;
	}
	
	public static <T> Set<T> complement(Set<T> a,Set<T> b){
		return difference(union(a,b), intersection(a, b));
	}
	
} ///:~
